Microprocessors are required to perform memory management to optimize finite, available memory resources. Memory management includes implementing specialized memory management tasks designed to identify and release memory associated with stale or dead objects. The memory associated with a dead object may have been previously allocated to the object for the purpose of executing a task whose execution has been completed or is no longer required. Memory associated with dead objects is referred to herein as “garbage or stale memory,” and a process of identifying and releasing the garbage memory back into a main memory, or memory heap, may be referred to herein as a “garbage collection process.”
When releasing the garbage memory back into the memory heap during a prior art garbage collection process, all task execution other than the garbage collection process must be suspended. Suspension of all task execution is required to prevent the occurrence of a race condition (i.e., a condition that may occur when both an executing task and the garbage collection process attempt to access the same piece of memory, thereby causing the executing task to crash). Of course, when task execution is suspended, the processor(s) executing the suspended tasks are idle and, therefore, not operating at their optimum level, thereby resulting in wasted computer resources and overall inefficiency of computer resources.